#pragma once
#include "IObject.h"

struct ITransformer :
	public IObject
{


protected: 
	virtual ~ITransformer(){};
	enum TransformerType
	{
		TransformerType_Unknown = 0,
		TransformerType_Matrix = 1,
		TransformerType_Perspective = 2,
		TransformerType_Effect = 3,
		TransformerType_Aggregate = 4,
		TransformerType_UpDown = 5
	};

public: 
	virtual HRESULT Transform(const struct XPOINTF *, struct XPOINTF *, XUINT32) = 0;
	virtual HRESULT ReverseTransform(const struct XPOINTF *, struct XPOINTF *, XUINT32) = 0;
	virtual enum ITransformer::TransformerType GetType() = 0;
	virtual XBOOL IsPure2D() = 0;
	virtual class CMILMatrix Get2DMatrix() = 0;
};